package com.cf.data.serve.environment;

import lombok.extern.slf4j.Slf4j;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

@Slf4j
public class TCPServer_tj {
    //1.实时数据
    //254 165 ：帧头
    //0 ：数据状态：0：实时数据，1：工作循环，2：报警数据
    //1 188 0 5 0 0 2 2 206 0 189 172  ：设备编号
    //1 2 ：实时高度（除100取1位小数）
    //3 4 ：实时幅度（除100取1位小数）
    //5 6 ：力矩百分比
    //7 8 ：实时重量（除1000取1位小数）
    //9 16 ：实时风速（除10取1位小数）
    //17 18 ：实时倾角X
    //19 20 ：实时倾角Y
    //21 22 ： 实时回转角
    //172 219 ：CRC校验


    //2.循环数据
    //254 165 ：帧头
    //1 ：数据状态：0：实时数据，1：工作循环，2：报警数据
    //1 188 0 5 0 0 2 2 206 0 189 172 ：设备编号
    //0 0 ：循环计数范围0~60000
    //1 2 ： 最大高度（除100取1位小数）
    //3 4 ：最大幅度（除100取1位小数）
    //5 6 ：最大重量（除1000取2位小数）
    //7 8 ：最大风速（除10取1位小数）
    //9 16 ：最大幅度角X
    //17 18 ：最大幅度角Y
    //19 20 ：最大幅度角
    //21 22 ：最小高度（除100取1位小数）
    //23 24 ：最小幅度（除100取1位小数）
    //25 32 ：最小风速（除10取1位小数）
    //33 34 ：最小倾角X
    //35 36 ：最小倾角Y
    //37 38 ：最小幅度角
    //172 219 ：CRC效验

    public static void jc(int port) throws IOException {
        ServerSocket serverSocket = null;
        try {
            System.out.println("等待客户端连接");
            serverSocket = new ServerSocket(port); // 监听1234端口
            Socket clientSocket = serverSocket.accept(); // 等待客户端连接
            System.out.println("连接成功");

            // 获取输入流
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            // 获取输出流
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            String inputLine;
            //存储单个2进制字符
            String[] cun = null;
            String parseResult = "";
            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine); // 将接收到的消息发送回客户端
                cun = inputLine.split(" ");
                for(int i = 0 ;i< cun.length;i++){
                    System.out.println( Integer.parseInt(cun[i], 16));
                }
                parseResult = String.join(",",cun);
/*                parseResult = String.valueOf(cun);
                System.out.println("解析后的数字是: " + parseResult);*/
            }


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (serverSocket != null) ;
            serverSocket.close();
            System.out.println("客户端已断开连接。");
            jc(port);
        }
    }


}
